home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-9.10-netbook-remix-PL.iso / casper / filesystem.squashfs / usr / include / linux / igmp.h < prev    next >
C/C++ Source or Header  |  2009-10-16  |  3KB  |  130 lines

  1. /*
  2.  *    Linux NET3:    Internet Group Management Protocol  [IGMP]
  3.  *
  4.  *    Authors:
  5.  *        Alan Cox <alan@lxorguk.ukuu.org.uk>
  6.  *
  7.  *    Extended to talk the BSD extended IGMP protocol of mrouted 3.6
  8.  *
  9.  *
  10.  *    This program is free software; you can redistribute it and/or
  11.  *    modify it under the terms of the GNU General Public License
  12.  *    as published by the Free Software Foundation; either version
  13.  *    2 of the License, or (at your option) any later version.
  14.  */
  15.  
  16. #ifndef _LINUX_IGMP_H
  17. #define _LINUX_IGMP_H
  18.  
  19. #include <linux/types.h>
  20. #include <asm/byteorder.h>
  21.  
  22. /*
  23.  *    IGMP protocol structures
  24.  */
  25.  
  26. /*
  27.  *    Header in on cable format
  28.  */
  29.  
  30. struct igmphdr
  31. {
  32.     __u8 type;
  33.     __u8 code;        /* For newer IGMP */
  34.     __sum16 csum;
  35.     __be32 group;
  36. };
  37.  
  38. /* V3 group record types [grec_type] */
  39. #define IGMPV3_MODE_IS_INCLUDE        1
  40. #define IGMPV3_MODE_IS_EXCLUDE        2
  41. #define IGMPV3_CHANGE_TO_INCLUDE    3
  42. #define IGMPV3_CHANGE_TO_EXCLUDE    4
  43. #define IGMPV3_ALLOW_NEW_SOURCES    5
  44. #define IGMPV3_BLOCK_OLD_SOURCES    6
  45.  
  46. struct igmpv3_grec {
  47.     __u8    grec_type;
  48.     __u8    grec_auxwords;
  49.     __be16    grec_nsrcs;
  50.     __be32    grec_mca;
  51.     __be32    grec_src[0];
  52. };
  53.  
  54. struct igmpv3_report {
  55.     __u8 type;
  56.     __u8 resv1;
  57.     __be16 csum;
  58.     __be16 resv2;
  59.     __be16 ngrec;
  60.     struct igmpv3_grec grec[0];
  61. };
  62.  
  63. struct igmpv3_query {
  64.     __u8 type;
  65.     __u8 code;
  66.     __be16 csum;
  67.     __be32 group;
  68. #if defined(__LITTLE_ENDIAN_BITFIELD)
  69.     __u8 qrv:3,
  70.          suppress:1,
  71.          resv:4;
  72. #elif defined(__BIG_ENDIAN_BITFIELD)
  73.     __u8 resv:4,
  74.          suppress:1,
  75.          qrv:3;
  76. #else
  77. #error "Please fix <asm/byteorder.h>"
  78. #endif
  79.     __u8 qqic;
  80.     __be16 nsrcs;
  81.     __be32 srcs[0];
  82. };
  83.  
  84. #define IGMP_HOST_MEMBERSHIP_QUERY    0x11    /* From RFC1112 */
  85. #define IGMP_HOST_MEMBERSHIP_REPORT    0x12    /* Ditto */
  86. #define IGMP_DVMRP            0x13    /* DVMRP routing */
  87. #define IGMP_PIM            0x14    /* PIM routing */
  88. #define IGMP_TRACE            0x15
  89. #define IGMPV2_HOST_MEMBERSHIP_REPORT    0x16    /* V2 version of 0x11 */
  90. #define IGMP_HOST_LEAVE_MESSAGE     0x17
  91. #define IGMPV3_HOST_MEMBERSHIP_REPORT    0x22    /* V3 version of 0x11 */
  92.  
  93. #define IGMP_MTRACE_RESP        0x1e
  94. #define IGMP_MTRACE            0x1f
  95.  
  96.  
  97. /*
  98.  *    Use the BSD names for these for compatibility
  99.  */
  100.  
  101. #define IGMP_DELAYING_MEMBER        0x01
  102. #define IGMP_IDLE_MEMBER        0x02
  103. #define IGMP_LAZY_MEMBER        0x03
  104. #define IGMP_SLEEPING_MEMBER        0x04
  105. #define IGMP_AWAKENING_MEMBER        0x05
  106.  
  107. #define IGMP_MINLEN            8
  108.  
  109. #define IGMP_MAX_HOST_REPORT_DELAY    10    /* max delay for response to */
  110.                         /* query (in seconds)    */
  111.  
  112. #define IGMP_TIMER_SCALE        10    /* denotes that the igmphdr->timer field */
  113.                         /* specifies time in 10th of seconds     */
  114.  
  115. #define IGMP_AGE_THRESHOLD        400    /* If this host don't hear any IGMP V1    */
  116.                         /* message in this period of time,    */
  117.                         /* revert to IGMP v2 router.        */
  118.  
  119. #define IGMP_ALL_HOSTS        htonl(0xE0000001L)
  120. #define IGMP_ALL_ROUTER     htonl(0xE0000002L)
  121. #define IGMPV3_ALL_MCR         htonl(0xE0000016L)
  122. #define IGMP_LOCAL_GROUP    htonl(0xE0000000L)
  123. #define IGMP_LOCAL_GROUP_MASK    htonl(0xFFFFFF00L)
  124.  
  125. /*
  126.  * struct for keeping the multicast list in
  127.  */
  128.  
  129. #endif
  130.